package en.edu.zucc.pb.loginapplication.repository;

import androidx.lifecycle.LiveData;
import android.content.Context;
import android.util.Log;

//import androidx.lifecycle.LiveData;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

//import cn.chenjianlink.android.alarmclock.db.AlarmClockDao;
//import cn.chenjianlink.android.alarmclock.db.BaseAlarmClockDatabase;
//import cn.chenjianlink.android.alarmclock.model.AlarmClock;
//import cn.chenjianlink.android.alarmclock.utils.LogUtil;
import en.edu.zucc.pb.loginapplication.AppDatabase;
import en.edu.zucc.pb.loginapplication.dao.UserDao;
import en.edu.zucc.pb.loginapplication.db.BaseDao;
import en.edu.zucc.pb.loginapplication.db.BaseRepository;
import en.edu.zucc.pb.loginapplication.entity.Type;
import en.edu.zucc.pb.loginapplication.entity.User;

/**
 * @author chenjian
 * 对数据库操作进行封装，向ViewModel提供封装方法
 */
public class UserRepository extends BaseRepository<User> {
    public UserRepository(BaseDao<User> baseDao) {
        super(baseDao);
    }
//
//    private final UserDao userDao;
//
//    private final LiveData<List<User>> userList;
//
//    /**
//     * 线程池，在子线程中处理增删改
//     */
//    private final ExecutorService executor;
//
//    public UserRepository(Context context) {
////        userDao = AppDatabase.getDatabase(context).getUserDao();
//        userList = userDao.getAllLiveData();
//        executor = new ThreadPoolExecutor(2, 4, 1,
//                TimeUnit.MINUTES, new SynchronousQueue<Runnable>(), new ThreadPoolExecutor.DiscardOldestPolicy());
//    }
//
//
//    public void update(final User user) {
//        executor.execute(new Runnable() {
//            @Override
//            public void run() {
//                userDao.update(user);
//            }
//        });
//    }
//
//    public void updateAll(final User ... user) {
//        executor.execute(new Runnable() {
//            @Override
//            public void run() {
//                userDao.updateAll(user);
//            }
//        });
//    }
//
//
//    public void insert(final User user) {
//        Log.i("Repository", "insert data");
//        executor.execute(new Runnable() {
//            @Override
//            public void run() {
//                userDao.insert(user);
//            }
//        });
//    }
//
//    /**
//     * 删除闹钟
//     *
//     * @param user 要删除的闹钟
//     */
//    public void delete(final User user) {
//        executor.execute(new Runnable() {
//            @Override
//            public void run() {
//                userDao.delete(user);
//            }
//        });
//    }
//
//    /**
//     * 查询出所有闹钟，若没有闹钟，则查找系统服务中的闹钟
//     *
//     * @return 返回LiveData包装的AlarmClock列表
//     */
////    public LiveData<List<AlarmClock>> findAll() {
////        return alarmClockList;
////    }
//
//
////    public AlarmClock findById(int alarmClockId) {
////        return userDao.s(alarmClockId);
////    }
//
//   public List<User> getByUsername(final String username){
//        return userDao.getByUsername(username);
////        executor.execute(new Runnable() {
////            @Override
////            public void run() {
////                userDao.getByUsername(username);
////            }
////        });
////        return userDao.s(alarmClockId);
//    }
//
//    public LiveData<List<User>> getLvdaByUsername(final String username){
//        return userDao.getLvdaByUsername(username);
////        executor.execute(new Runnable() {
////            @Override
////            public void run() {
////                userDao.getByUsername(username);
////            }
////        });
////        return userDao.s(alarmClockId);
//    }
//
////        public AlarmClock findById(int alarmClockId) {
////        return userDao.s(alarmClockId);
////    }
//
//    /**
//     * 查询出所有闹钟，若没有闹钟，则查找系统服务中的闹钟
//     *
//     * @return 返回LiveData包装的AlarmClock列表
//     */
//    public LiveData<List<User>> getAll() {
//        return userList;
//    }
//
//    /**
//     * 查询单个闹钟
//     *
//     * @param userId 要查询的闹钟id
//     * @return 闹钟对象
//     */
////    public User findById(int userId) {
////        return userDao.selectById(userId);
////    }
//
//    /**
//     * 返回未封装在LiveData中的闹钟列表
//     *
//     * @return 闹钟列表
//     */
////    public List<AlarmClock> findAllWithoutLiveData() {
////        return alarmClockDao.selectAllWithoutLiveData();
////    }

}
